﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Ink;

namespace RozpoznawanieCore.KsztaltyFolder
{

    class KreskaSkosna : Kreska
    {
        public const int ROSNIE = 1;
        public const int SPADA = 2;

        public KreskaSkosna(Stroke s)
        {
            this.strokeCol.Add(s);

            double c1, c2, u1, u2;
            c1 = s.StylusPoints[0].X;
            c2 = s.StylusPoints[s.StylusPoints.Count - 1].X;
            u1 = s.StylusPoints[0].Y;
            u2 = s.StylusPoints[s.StylusPoints.Count - 1].Y;

            if (c1 > c2)
            {
                if (u1 < u2) orientacja = ROSNIE; else orientacja = SPADA;
            }
            else
            {
                if (u1 > u2) orientacja = ROSNIE; else orientacja = SPADA;
            }
            Console.WriteLine("or "+orientacja);
            if (orientacja == ROSNIE)
            {
                x1 = (int)Math.Min(c1, c2);
                x2 = (int)Math.Max(c1, c2);
                y1 = (int)Math.Max(u1, u2);
                y2 = (int)Math.Min(u1, u2);
            }
            else
            {

                x1 = (int)Math.Min(c1, c2);
                x2 = (int)Math.Max(c1, c2);
                y1 = (int)Math.Min(u1, u2);
                y2 = (int)Math.Max(u1, u2);
            }

        }
        public Ksztalt zrobX(KreskaSkosna kp)
        {
            if (orientacja == kp.orientacja) return null;
            if (orientacja == ROSNIE) return null;
            int dlugosc1 = x2 - x1;
            int dlugosc2 = kp.y2 - kp.y1;
            StrokeCollection s;
            double a1, a2, b2, b1;
          
            a1 = ((double)(y2 - y1)) / ((double)(x2 - x1));
            b1 = y1 - a1 * x1;

            a2 = ((double)(kp.y2 - kp.y1)) / ((double)(kp.x2 - kp.x1));
            b2 = kp.y1 - a2 * kp.x1;
            double px = (b2 - b1) / (a1 - a2);
            double py = a1 * px + b1;
            
            Console.WriteLine(px + " x1 " +x1+" x2 "+x2+" "+ (px > x1) + " " + (px < x2));
            if(px>x1 && px<x2 && y1<py && y2>py)
          /*  Console.WriteLine("pierwsz " + (x1 >= kp.x1 || x2 < kp.x2) +" "+ x1 + " " + kp.x1 + " " + x2 + " " + kp.x2);
            Console.WriteLine("drugie " + (y1 >= kp.y1)+" "+(y2 <=kp.y2));
            if ((x1>=kp.x1 || x2<kp.x2)&& (y1>kp.y2 || y2<kp.y1))//&& kp.x1 < x2 - dlugosc1 * 0.2


                //)*/
            {    strokeCol.Add(kp.strokeCol);
            
                Skresl p = new Skresl((int)px,(int) py, strokeCol);
                return p;
            }
            
            return null;
        }
    
    }

}
